home *** CD-ROM | disk | FTP | other *** search
/ The Programmer Disk / The Programmer Disk (Microforum).iso / xpro / qb2 / pro15 / lines.bas < prev    next >
BASIC Source File  |  1990-08-20  |  3KB  |  119 lines

  1.  '******************************************************************************
  2.  '* LINES - Walking lines drawing demo.                                        *
  3.  '*                                                                            *
  4.  '* Written for GRAFIX by:  Joseph A. Albrecht                                 *
  5.  '*                                                                            *
  6.  '* Press F10 to toggle between 320 and 640 graphic modes                      *
  7.  '* Press ESC to exit program                                                  *
  8.  '******************************************************************************
  9.  '$INCLUDE: 'GRAFQBS.INC'
  10.  'The above line is for QuickBASIC.
  11.  
  12.  ''$INCLUDE "GRAFTBS.INC"
  13.  'The above line is for TURBO BASIC. Remove the  ''  to compile the program.
  14.  
  15.  ''$INCLUDE "GRAFPBS.INC"
  16.  'The above line is for PowerBASIC. Remove the  ''  to compile the program.
  17.  
  18.  DEF FNRND (Maximum) = (RND * Maximum) + 1
  19.  
  20.  Lines = 150
  21.  DIM LineX1(Lines), LineY1(Lines), LineX2(Lines), LineY2(Lines)
  22.  Graphics = 320
  23.  Delta1 = 31
  24.  Delta2 = 16
  25.  MaxX = 320
  26.  MaxX1 = 319
  27.  MaxY = 200
  28.  MaxY1 = 199
  29.  MaxColor = 15
  30.  CALL GetTandy11(Tandy11%)
  31.  CALL MediumGraphics
  32.  
  33. Again:
  34.  CALL ClearScreen
  35.  RANDOMIZE TIMER
  36.  Tint = FNRND(MaxColor)
  37.  IX = 0
  38.  Cnt = 0
  39.  
  40.  X1 = FNRND(MaxX) - 1
  41.  Y1 = FNRND(MaxY) - 1
  42.  X2 = FNRND(MaxX) - 1
  43.  Y2 = FNRND(MaxY) - 1
  44.  
  45.  DX1 = FNRND(Delta1) - Delta2
  46.  DY1 = FNRND(Delta1) - Delta2
  47.  DX2 = FNRND(Delta1) - Delta2
  48.  DY2 = FNRND(Delta1) - Delta2
  49.  
  50.  DO
  51.    FOR ChangeCnt = 1 TO FNRND(Lines)
  52.      CALL ExtLineC(X1, Y1, X2, Y2, Tint)
  53.      IX = (IX + 1) MOD Lines
  54.      IF Cnt = Lines THEN
  55.        CALL ExtLineC(LineX1(IX), LineY1(IX), LineX2(IX), LineY2(IX), Black)
  56.      END IF
  57.  
  58.      LineX1(IX) = X1
  59.      LineY1(IX) = Y1
  60.      LineX2(IX) = X2
  61.      LineY2(IX) = Y2
  62.  
  63.      IF Cnt < Lines THEN Cnt = Cnt + 1
  64.  
  65.      X1 = X1 + DX1
  66.      IF (X1 < 0) OR (X1 > MaxX1) THEN
  67.        DX1 = -DX1
  68.        X1 = X1 + DX1
  69.      END IF
  70.  
  71.      Y1 = Y1 + DY1
  72.      IF (Y1 < 0) OR (Y1 > MaxY1) THEN
  73.        DY1 = -DY1
  74.        Y1 = Y1 + DY1
  75.      END IF
  76.  
  77.      X2 = X2 + DX2
  78.      IF (X2 < 0) OR (X2 > MaxX1) THEN
  79.        DX2 = -DX2
  80.        X2 = X2 + DX2
  81.      END IF
  82.  
  83.      Y2 = Y2 + DY2
  84.      IF (Y2 < 0) OR (Y2 > MaxY1) THEN
  85.        DY2 = -DY2
  86.        Y2 = Y2 + DY2
  87.      END IF
  88.    NEXT ChangeCnt
  89.  
  90.    DX1 = FNRND(Delta1) - Delta2
  91.    DY1 = FNRND(Delta1) - Delta2
  92.    DX2 = FNRND(Delta1) - Delta2
  93.    DY2 = FNRND(Delta1) - Delta2
  94.  
  95.    Tint = FNRND(MaxColor) - 1
  96.    K$ = INKEY$
  97.    K$ = RIGHT$(K$, 1)
  98.    IF K$ = CHR$(27) THEN
  99.      CALL ExitGraphics
  100.      END
  101.    END IF
  102.    IF K$ = CHR$(68) AND Tandy11% = Tandy11.True% THEN
  103.      IF Graphics = 320 THEN
  104.        Graphics = 640
  105.        MaxX = 640
  106.        MaxX1 = 639
  107.        CALL HighGraphics
  108.        GOTO Again
  109.      ELSE
  110.        Graphics = 320
  111.        MaxX = 320
  112.        MaxX1 = 319
  113.        CALL MediumGraphics
  114.        GOTO Again
  115.      END IF
  116.    END IF
  117.  LOOP
  118.  
  119.